package cn.com.pansky.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

/**
 * 解压缩
 * @说明 
 * @author Nobody
 * @version 1.0
 * @since
 */
public class EctractZip {
	
//	public static void main(String[] args) {
//		EctractZip z = new EctractZip();
//		ArrayList<String> a = z.Ectract("/Users/xiangli/Downloads/temp/a.zip", "/Users/xiangli/Downloads/temp/"); // 返回解压缩出来的文件列表
////		序号|商户号|商户名称|流水号|商户订单号|交易时间|交易金额|退款金额|手续费|结算金额|支付渠道|交易类型|支付类型|子账号
////		1|10001|西安融联网络科技有限公司|J010022016111117110541410001|20161111170812341|2016-11-11 17:11:05|2.00|0.00|0.00|2.00|网银支付|消费|B2C|1000100000
//
//		for(String s : a){
//			System.out.println(s);
////			CommonUtils.readTxtFile(s, "utf-8");
//		}
//	}

	/**
	 * 解压缩
	 * @param sZipPathFile 要解压的文件
	 * @param sDestPath 解压到某文件夹
	 * @return
	 */
	public ArrayList<String> Ectract(String sZipPathFile, String sDestPath) {
		ArrayList<String> allFileName = new ArrayList<String>();
		try {
			// 先指定压缩档的位置和档名，建立FileInputStream对象
			FileInputStream fins = new FileInputStream(sZipPathFile);
			// 将fins传入ZipInputStream中
			ZipInputStream zins = new ZipInputStream(fins);
			ZipEntry ze = null;
			byte[] ch = new byte[256];
			while ((ze = zins.getNextEntry()) != null) {
				File zfile = new File(sDestPath + ze.getName());
				File fpath = new File(zfile.getParentFile().getPath());
				if (ze.isDirectory()) {
					if (!zfile.exists())
						zfile.mkdirs();
					zins.closeEntry();
				} else {
					if (!fpath.exists())
						fpath.mkdirs();
					FileOutputStream fouts = new FileOutputStream(zfile);
					int i;
					allFileName.add(zfile.getAbsolutePath());
					while ((i = zins.read(ch)) != -1)
						fouts.write(ch, 0, i);
					zins.closeEntry();
					fouts.close();
				}
			}
			fins.close();
			zins.close();
		} catch (Exception e) {
			System.err.println("Extract error:" + e.getMessage());
		}
		return allFileName;
	}
}